home *** CD-ROM | disk | FTP | other *** search
- {
- From: GUY MCLOUGHLIN
- Subj: Checking file open
-
- I'm looking for a way of detecting if a file is currently open,
- so my ExitProc can close it when open and not fail when trying
- to close a file that is not open.
-
- (* Public-domain demo to check a file variable's *)
- (* current file mode. Guy McLoughlin - Oct '93. *)
- }
-
- program Test_FileMode_Demo;
- uses
- dos;
-
- (**** Display current filemode for a file variable. *)
- (* *)
- procedure DisplayFileMode({input } const fi_IN);
- begin
- case textrec(fi_IN).mode of
- FMclosed : writeln('* File closed');
- FMinput : writeln('* File open in read-only mode');
- FMoutput : writeln('* File open in write-only mode');
- FMinout : writeln('* File open in read/write mode')
- else
- writeln('* File not assigned')
- end
- end; (* DisplayFileMode. *)
-
-
- (**** Check for IO file errors. *)
- (* *)
- procedure CheckForIOerror;
- var
- in_Error : integer;
- begin
- in_Error := ioresult;
- if (ioresult <> 0) then
- begin
- writeln('Error creating file');
- halt(1)
- end
- end; (* CheckForIOerror. *)
-
-
- var
- fi_Temp1 : text;
- fi_Temp2 : file;
-
- BEGIN
- (* Demo filemodes for a TEXT file variable. *)
- writeln('TEXT file variable test');
- DisplayFileMode(fi_Temp1);
- assign(fi_Temp1, 'TEST.DAT');
- DisplayFileMode(fi_Temp1);
- {$I-} rewrite(fi_Temp1); {$I+}
- CheckForIOerror;
- DisplayFileMode(fi_Temp1);
- {$I-} close(fi_Temp1); {$I+}
- CheckForIOerror;
- DisplayFileMode(fi_Temp1);
-
- (* Demo filemodes for an UNTYPED file variable. *)
- writeln;
- writeln('UNTYPED file variable test');
- DisplayFileMode(fi_Temp2);
- assign(fi_Temp2, 'TEST.DAT');
- DisplayFileMode(fi_Temp2);
- {$I-} rewrite(fi_Temp2); {$I+}
- CheckForIOerror;
- DisplayFileMode(fi_Temp2);
- {$I-} close(fi_Temp2); {$I+}
- CheckForIOerror;
- DisplayFileMode(fi_Temp2)
- END.
-
- *** NOTE: If you are not using version 7 of Turbo Pascal, change
- the input parameter of the DisplayFileMode routine from
- a CONSTANT parameter to a VAR parameter.
-
- ie: TP7+ : DisplayFileMode({input } const fi_IN);
-
- TP4+ : DisplayFileMode({input } var fi_IN);
-
- - Guy